E π A π π ª π EÈÛ ÁˆÁ ÛÙËÓ ÏËÚÔÊÔÚÈÎ TfiÌÔ ' KÏ ÓıË Ú ÌappleÔ Ï Ë ÏÒÛÛ ÚÔÁÚ ÌÌ ÙÈÛÌÔ
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα EΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Τόµος ' Γλώσσες Προγραµµατισµού ΚΛΕΑΝΘΗΣ ΘΡΑΜΠΟΥΛΙ ΗΣ Επίκουρος Καθηγητής τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πανεπιστηµίου Πατρών ΠATPA 2000
ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Σχολή Θετικών Επιστηµών και Τεχνολογίας Πρόγραµµα Σπουδών ΠΛHPOΦOPIKH Θεµατική Ενότητα ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ Τόµος ' Γλώσσες Προγραµµατισµού Συγγραφή ΚΛΕΑΝΘΗΣ ΘΡΑΜΠΟΥΛΙ ΗΣ Επίκουρος Καθηγητής τµήµατος Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών Πανεπιστηµίου Πατρών Κριτική Ανάγνωση ΕΛΠΙ Α ΚΕΡΑΥΝΟY Καθηγήτρια Τµήµατος Πληροφορικής Πανεπιστηµίου Κύπρου Ακαδηµαϊκός Υπεύθυνος για την επιστηµονική επιµέλεια του τόµου ΠANAΓIΩTHΣ ΠINTEΛAΣ Καθηγητής Tµήµατος Mαθηµατικών Πανεπιστηµίου Πατρών Επιµέλεια στη µέθοδο της εκπαίδευσης από απόσταση ΓΕΡΑΣΙΜΟΣ ΚΟΥΣΤΟΥΡΑΚΗΣ Γλωσσική Επιµέλεια IΩANNHΣ ΘEOΦIΛAΣ Τεχνική Επιµέλεια ΕΣΠΙ ΕΚ ΟΤΙΚΗ Ε.Π.Ε. Καλλιτεχνική Επιµέλεια Σελιδοποίηση TYPORAMA Συντονισµός ανάπτυξης εκπαιδευτικού υλικού και γενική επιµέλεια των εκδόσεων ΟΜΑ Α ΕΚΤΕΛΕΣΗΣ ΕΡΓΟΥ ΕΑΠ / 1997 2000 ISBN: 960 538 084 6 Kωδικός Έκδοσης: ΠΛH 10/4 Copyright 2000 για την Ελλάδα και όλο τον κόσµο ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ Οδός Παπαφλέσσα & Υψηλάντη, 26222 Πάτρα Τηλ: (0610) 314094, 314206 Φαξ: (0610) 317244 Σύµφωνα µε το Ν. 2121/1993, απαγορεύεται η συνολική ή αποσπασµατική αναδηµοσίευση του βιβλίου αυτού ή η αναπαραγωγή του µε οποιοδήποτε µέσο χωρίς την άδεια του εκδότη.
ÂÚÈ fiìâó K º π 1 EÈÛ ÁˆÁ Eισαγωγικές παρατηρήσεις... 11 1.1 Η γλώσσα προγραµµατισµού στη διαδικασία ανάπτυξης συστηµάτων λογισµικού... 13 Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις... 13 1.1.1 Τεχνολογία Λογισµικού... 15 1.1.2 Ιστορική αναδροµή στη διαδικασία ανάπτυξης λογισµικού... 15 1.1.3 Η διαδικασία ανάπτυξης λογισµικού ως διαδικασία παραγωγής µοντέλων... 16 1.1.4 Η διεργασία σαν βασικό δοµικό στοιχείο στη διαδικασία ανάπτυξης λογισµικού... 18 1.2 Η φάση της υλοποίησης... 19 Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις... 19 1.2.1 Τα βήµατα της φάσης της υλοποίησης... 20 1.2.2 Συγγραφή πηγαίου κώδικα... 21 1.2.3 Μεταγλώττιση... 22 1.2.4 Σύνδεση... 23 1.2.5 ιαδικασία ανάπτυξης παραδειγµάτων... 25 1.3 Μορφές προγραµµατισµού και ιστορία γλωσσών... 27 Σκοπός, Προσδοκώµενα αποτελέσµατα,... 27 1.3.1 Μορφές προγραµµατισµού... 27 1.3.2 Ιστορία των γλωσσών προστακτικού προγραµµατισµού... 30 1.3.3 Ιστορία της C... 31 1.3.4 Γιατί C;... 32 Σύνοψη... 33 Bιβλιογραφία κεφαλαίου... 34
6 ø E PO PAMMATI MOY K º π 2 ÓÙ ÎÙÈÎfi ÏÒÛÛ Eισαγωγικές παρατηρήσεις... 37 2.1 Tι είναι το αλφάβητο µιας γλώσσας προγραµµατισµού;... 39 2.2 H έννοια του συντακτικού... 39 2.3 Tο λεξιλόγιο της γλώσσας... 40 2.4 εσµευµένες λέξεις... 41 2.5 Λέξεις κλειδιά... 42 2.6 Aναγνωριστές... 43 2.7 Συντακτικά Σηµασιολογικά λάθη... 44 Σύνοψη... 46 Bιβλιογραφία κεφαλαίου... 47 K º π 3 MÂÙ ÏËÙ Ù ıâú T appleôè Â ÔÌ ÓˆÓ Eισαγωγικές παρατηρήσεις... 49 3.1 Eισαγωγή στις έννοιες της µεταβλητής, της σταθερής και του τύπου δεδοµένων... 51 Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις... 51 3.1.1 Τι είναι µεταβλητή;... 52 3.1.2 ήλωση µεταβλητής... 53 3.1.3 Τι είναι οι τύποι δεδοµένων;... 54 3.1.4 ήλωση µεταβλητών στη C... 55 3.1.5 Μεταβλητές που δεν αλλάζουν τιµή... 55 3.1.6 Η έννοια της σταθερής... 56 3.2 Oι τύποι δεδοµένων στη γλώσσα C... 56 Σκοπός, Προσδοκώµενα αποτελέσµατα, Eισαγωγικές παρατηρήσεις... 56 3.2.1 Τύπος χαρακτήρα... 57 3.2.2 Το πρώτο πρόγραµµά σας... 60 3.2.3 Τύπος ακεραίου... 62 3.2.4 Τύποι πραγµατικών αριθµών... 64 Σύνοψη... 66 Bιβλιογραφία κεφαλαίου... 67
EPIEXOMENA 7 K º π 4 Ó ÎÂ Â ÎÙÂ Eισαγωγικές παρατηρήσεις... 69 4.1 Tύπος πίνακα... 71 4.1.1 ήλωση Πίνακα... 71 4.1.2 Αναφορά στοιχείου Πίνακα... 71 4.1.3 Το αλφαριθµητικό σαν πίνακας χαρακτήρων... 72 4.1.4 Αλφαριθµητική σταθερά... 73 4.1.5 Πολυδιάστατοι πίνακες... 74 4.2 O τύπος του δείκτη... 75 4.2.1 ήλωση δείκτη... 76 4.2.3 Ανάθεση τιµής σε δείκτη... 77 4.2.4 Τελεστές που έχουν σχέση µε δείκτες... 77 4.2.5 Σχέση δεικτών µε πίνακες... 79 Σύνοψη... 80 Bιβλιογραφία κεφαλαίου... 80 K º π 5 TÂÏÂÛÙ EÎÊÚ ÛÂÈ ÚÔÙ ÛÂÈ Eισαγωγικές παρατηρήσεις... 81 5.1 O τελεστής στη γλώσσα προγραµµατισµού... 83 5.2 Έκφραση... 84 5.2.1 Συµβολισµοί στο σχηµατισµό εκφράσεων... 84 5.2.2 Κατηγορίες εκφράσεων της C... 85 5.2.3 Υπολογισµός τιµής έκφρασης... 86 5.2.4 ένδρο αφηρηµένης σύνταξης... 89 5.3 Mετατροπές τύπων... 90 5.3.1 Υπονοούµενες µετατροπές... 90 5.3.2 Ρητές µετατροπές... 91 5.4 Πρόταση... 91 5.4.1 Σύνθετη πρόταση... 92 5.4.2 Προτάσεις Προεπεξεργαστή... 93 5.5 Oι τελεστές της C... 93
8 ø E PO PAMMATI MOY 5.5.1 Αριθµητικοί τελεστές... 94 5.5.2 Τελεστές ανάθεσης... 95 5.5.3 Συσχετιστικοί τελεστές... 97 5.5.4 Λογικοί τελεστές &&, και!... 98 5.5.5 Τελεστές Μνήµης... 98 5.5.6 Ο τελεστής µετατροπής τύπου... 98 5.5.7 Τελεστής sizeof... 98 5.5.8 Τελεστές διαχείρισης bits... 99 5.5.9 Υποθετικός Τελεστής... 99 Σύνοψη... 100 Bιβλιογραφία κεφαλαίου... 101 K º π 6 AÊ ÈÚÂÙÈÎfiÙËÙ ÛÙÈ ÈÂÚÁ Û Â Eισαγωγικές παρατηρήσεις... 103 6.1 Aφαιρετικότητα στις διεργασίες... 105 6.2 Aρθρωτός σχεδιασµός... 106 6.3 Συναρτήσεις... 107 6.3.1 ήλωση συνάρτησης... 107 6.3.2 Κλήση συνάρτησης... 109 6.3.3 Ορισµός συνάρτησης... 109 6.3.4 Επεξήγηση του µηχανισµού κλήσης συνάρτησης... 111 6.4 H βασική βιβλιοθήκη της C... 112 Σύνοψη... 114 Bιβλιογραφία κεφαλαίου... 114 K º π 7 ÚÔÙ ÛÂÈ EÏ Á Ô PÔ Eισαγωγικές παρατηρήσεις... 115 7.1 H διαµόρφωση της ροής ελέγχου προγράµµατος... 117 7.1.1 οµηµένος προγραµµατισµός... 117 7.1.2 Προτάσεις διακλάδωσης υπό συνθήκης... 118 7.1.3 Προτάσεις επανάληψης... 119 7.1.4 Προτάσεις διακλάδωσης χωρίς συνθήκη... 121
EPIEXOMENA 9 7.2 Προτάσεις ελέγχου ροής στη C... 123 Eισαγωγικές παρατηρήσεις... 123 7.2.1 Πρόταση if... 124 7.2.2 Η πρόταση switch... 126 7.2.3 Πρόταση επανάληψης while... 129 7.2.4 Πρόταση επανάληψης do while... 132 7.2.5 Πρόταση επανάληψης for... 133 7.2.6 Επιλογή βρόχου... 134 7.2.7 Ένθετοι βρόχοι... 135 7.2.8 Προτάσεις break, continue και goto... 136 Σύνοψη... 137 Bιβλιογραφία κεφαλαίου... 137 K º π 8 ÚÔ ˆÚËÌ Ó Ì Ù Ó ÚÙ ÛÂˆÓ Eισαγωγικές παρατηρήσεις... 139 8.1 Eµβέλεια ονοµάτων ιάρκεια µεταβλητών... 141 8.1.1 Εµβέλεια ονοµάτων... 141 8.1.2 ιάρκεια µεταβλητών... 143 8.1.3 Οργάνωση προγράµµατος... 145 8.2 Mεταβίβαση παραµέτρων... 149 8.3 Aναδροµικότητα... 152 Σύνοψη... 154 Bιβλιογραφία κεφαλαίου... 156 K º π 9 AÊ ÈÚÂÙÈÎfiÙËÙ ÛÙ Â ÔÌ Ó Eισαγωγικές παρατηρήσεις... 157 9.1 H έννοια της δοµής... 159 9.2 Ορισµός δοµής... 159 9.3 ήλωση µεταβλητών... 160 9.4 Απόδοση αρχικών τιµών... 161 9.5 Αναφορά στα µέλη δοµής... 162 9.6 Ένθεση δοµών... 162 9.7 Πέρασµα δοµής σε συνάρτηση... 162
10 ø E PO PAMMATI MOY 9.8 Πίνακες δοµών... 163 9.9 είκτες σε δοµές... 164 Σύνοψη... 165 Bιβλιογραφία κεφαλαίου... 166 K º π 10 H ÏÒÛÛ ÚÔÁÚ ÌÌ ÙÈÛÌÔ Pascal Eισαγωγικές παρατηρήσεις... 167 10.1 Γενικά... 169 10.2 Τύποι δεδοµένων... 169 10.3 Μορφή προγράµµατος Pascal... 170 10.4 Αφαιρετικότητα στις διεργασίες... 172 10.5 ιαµόρφωση της ροής εκτέλεσης προγράµµατος... 174 Σύνοψη... 176 Bιβλιογραφία κεφαλαίου... 176 Aπαντήσεις ασκήσεων αυτοαξιολόγησης... 177 Aπαντήσεις ραστηριοτήτων... 198 Bιβλιογραφία... 219 Γλωσσάρι όρων... 223